package com.biosimilarity.naturalselection.model.dataset;
import com.biosimilarity.naturalselection.model.dataset.Absyn.*;

public class PrettyPrinter
{
  //For certain applications increasing the initial size of the buffer may improve performance.
  private static final int INITIAL_BUFFER_SIZE = 128;
  //You may wish to change the parentheses used in precedence.
  private static final String _L_PAREN = new String("(");
  private static final String _R_PAREN = new String(")");
  //You may wish to change render
  private static void render(String s)
  {
    if (s.equals("{"))
    {
       buf_.append("\n");
       indent();
       buf_.append(s);
       _n_ = _n_ + 2;
       buf_.append("\n");
       indent();
    }
    else if (s.equals("(") || s.equals("["))
       buf_.append(s);
    else if (s.equals(")") || s.equals("]"))
    {
       backup();
       buf_.append(s);
       buf_.append(" ");
    }
    else if (s.equals("}"))
    {
       _n_ = _n_ - 2;
       backup();
       backup();
       buf_.append(s);
       buf_.append("\n");
       indent();
    }
    else if (s.equals(","))
    {
       backup();
       buf_.append(s);
       buf_.append(" ");
    }
    else if (s.equals(";"))
    {
       backup();
       buf_.append(s);
       buf_.append("\n");
       indent();
    }
    else if (s.equals("")) return;
    else
    {
       buf_.append(s);
       buf_.append(" ");
    }
  }


  //  print and show methods are defined for each category.
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.Binding foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.Binding foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordPtn foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordPtn foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordVariable foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordVariable foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.CollectionExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.CollectionExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormals foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormals foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBodyExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBodyExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBodyExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBodyExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldName foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldName foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleDeclOrCond foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleDeclOrCond foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtn foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtn foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGen foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGen foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCond foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCond foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureTupleCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureTupleCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTupleCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTupleCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundValueCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundValueCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureValueCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureValueCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.LogicalGround foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.LogicalGround foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldType foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldType foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.CollType foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.CollType foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeName foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeName foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundType foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundType foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeFormals foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeFormals foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.Comparison foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.Comparison foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVariable foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVariable foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLiteral foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLiteral foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListBinding foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListBinding foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleDeclOrCond foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleDeclOrCond foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueCondition foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueCondition foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTypeExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTypeExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListFieldExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListFieldExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTuplePtn foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTuplePtn foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String print(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueExpr foo)
  {
    pp(foo, 0);
    trim();
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  public static String show(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueExpr foo)
  {
    sh(foo);
    String temp = buf_.toString();
    buf_.delete(0,buf_.length());
    return temp;
  }
  /***   You shouldn't need to change anything beyond this point.   ***/

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Joined)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Joined _joined = (com.biosimilarity.naturalselection.model.dataset.Absyn.Joined) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_joined.recordexpr_1, 0);
       render("&");
       pp(_joined.recordexpr_2, 1);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Isolated)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Isolated _isolated = (com.biosimilarity.naturalselection.model.dataset.Absyn.Isolated) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_isolated.recordexpr_1, 1);
       render("|");
       pp(_isolated.recordexpr_2, 2);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Consed)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Consed _consed = (com.biosimilarity.naturalselection.model.dataset.Absyn.Consed) foo;
       if (_i_ > 2) render(_L_PAREN);
       pp(_consed.tupleexpr_, 0);
       render("::");
       pp(_consed.recordexpr_, 3);
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Contexted)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Contexted _contexted = (com.biosimilarity.naturalselection.model.dataset.Absyn.Contexted) foo;
       if (_i_ > 3) render(_L_PAREN);
       render("let");
       pp(_contexted.listbinding_, 0);
       render("in");
       pp(_contexted.recordexpr_, 3);
       if (_i_ > 3) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Referenced)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Referenced _referenced = (com.biosimilarity.naturalselection.model.dataset.Absyn.Referenced) foo;
       if (_i_ > 3) render(_L_PAREN);
       pp(_referenced.recordvariable_, 0);
       if (_i_ > 3) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Collected)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Collected _collected = (com.biosimilarity.naturalselection.model.dataset.Absyn.Collected) foo;
       if (_i_ > 3) render(_L_PAREN);
       render("record");
       pp(_collected.collectionexpr_, 0);
       if (_i_ > 3) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Emptied)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Emptied _emptied = (com.biosimilarity.naturalselection.model.dataset.Absyn.Emptied) foo;
       if (_i_ > 3) render(_L_PAREN);
       render("Nil");
       if (_i_ > 3) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.Binding foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.BindingExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.BindingExpr _bindingexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.BindingExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_bindingexpr.recordptn_1, 0);
       render("=");
       pp(_bindingexpr.recordptn_2, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordPtn foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordDestructor)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordDestructor _recorddestructor = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordDestructor) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{:");
       pp(_recorddestructor.listtupleptn_, 0);
       render(";");
       pp(_recorddestructor.recordptn_, 0);
       render(":}");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordLiteral)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordLiteral _recordliteral = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordLiteral) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_recordliteral.recordexpr_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordVariable foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordIdent _recordident = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordIdent) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_recordident.uident_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordWild)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordWild _recordwild = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordWild) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("_");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.CollectionExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Extension)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Extension _extension = (com.biosimilarity.naturalselection.model.dataset.Absyn.Extension) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_extension.fieldformals_, 0);
       pp(_extension.extensionbodyexpr_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Intension)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Intension _intension = (com.biosimilarity.naturalselection.model.dataset.Absyn.Intension) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_intension.fieldformals_, 0);
       pp(_intension.intensionbodyexpr_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormals foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormalSpec)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormalSpec _fieldformalspec = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormalSpec) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("(");
       pp(_fieldformalspec.listfieldexpr_, 0);
       render(")");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBodyExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBody)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBody _extensionbody = (com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBody) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{");
       pp(_extensionbody.listtupleexpr_, 0);
       render("}");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBodyExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBody)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBody _intensionbody = (com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBody) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{");
       pp(_intensionbody.tupleptn_, 0);
       render("|");
       pp(_intensionbody.listtupledeclorcond_, 0);
       render("}");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldDecl)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldDecl _fielddecl = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldDecl) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_fielddecl.fieldname_, 0);
       render(":");
       pp(_fielddecl.fieldtype_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldActual)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldActual _fieldactual = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldActual) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_fieldactual.fieldname_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldName foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldIdent _fieldident = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldIdent) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_fieldident.uident_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSumExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSumExpr _tuplesumexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSumExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_tuplesumexpr.tupleexpr_1, 0);
       render("+");
       pp(_tuplesumexpr.tupleexpr_2, 1);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleBaseExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleBaseExpr _tuplebaseexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleBaseExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("(");
       pp(_tuplebaseexpr.listvalueexpr_, 0);
       render(")");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleMultExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleMultExpr _tuplemultexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleMultExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       pp(_tuplemultexpr.tupleexpr_1, 1);
       render("*");
       pp(_tuplemultexpr.tupleexpr_2, 2);
       if (_i_ > 1) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleDeclOrCond foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ConditionIn)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ConditionIn _conditionin = (com.biosimilarity.naturalselection.model.dataset.Absyn.ConditionIn) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_conditionin.tuplecond_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.DeclIn)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.DeclIn _declin = (com.biosimilarity.naturalselection.model.dataset.Absyn.DeclIn) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_declin.tuplegen_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtn foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtnExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtnExpr _tupleptnexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtnExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("(");
       pp(_tupleptnexpr.listvalueexpr_, 0);
       render(")");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGen foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGenExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGenExpr _tuplegenexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGenExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_tuplegenexpr.tupleptn_, 0);
       render("<-");
       pp(_tuplegenexpr.recordexpr_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCond foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSatExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSatExpr _tuplesatexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSatExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_tuplesatexpr.tupleptn_, 0);
       render("in");
       pp(_tuplesatexpr.tuplecondition_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCompExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCompExpr _tuplecompexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCompExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_tuplecompexpr.valueexpr_1, 0);
       pp(_tuplecompexpr.comparison_, 0);
       pp(_tuplecompexpr.valueexpr_2, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctTupleCondition _disjuncttuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctTupleCondition) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_disjuncttuplecondition.tuplecondition_1, 0);
       render("||");
       pp(_disjuncttuplecondition.tuplecondition_2, 1);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctTupleCondition _conjuncttuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctTupleCondition) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_conjuncttuplecondition.tuplecondition_1, 1);
       render("&");
       pp(_conjuncttuplecondition.tuplecondition_2, 2);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedTupleCondition _negatedtuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedTupleCondition) foo;
       if (_i_ > 2) render(_L_PAREN);
       render("~");
       pp(_negatedtuplecondition.tuplecondition_, 2);
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralTupleCondition _structuraltuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralTupleCondition) foo;
       if (_i_ > 2) render(_L_PAREN);
       pp(_structuraltuplecondition.structuretuplecondition_, 0);
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.BaseTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.BaseTupleCondition _basetuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.BaseTupleCondition) foo;
       if (_i_ > 2) render(_L_PAREN);
       pp(_basetuplecondition.groundtuplecondition_, 0);
       if (_i_ > 2) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureTupleCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleValCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleValCond _tuplevalcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleValCond) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("(");
       pp(_tuplevalcond.listvaluecondition_, 0);
       render(")");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTupleCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleLogicGround)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleLogicGround _tuplelogicground = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleLogicGround) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_tuplelogicground.logicalground_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctValueCondition _disjunctvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctValueCondition) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_disjunctvaluecondition.valuecondition_1, 0);
       render("||");
       pp(_disjunctvaluecondition.valuecondition_2, 1);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctValueCondition _conjunctvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctValueCondition) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_conjunctvaluecondition.valuecondition_1, 1);
       render("&");
       pp(_conjunctvaluecondition.valuecondition_2, 2);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedValueCondition _negatedvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedValueCondition) foo;
       if (_i_ > 2) render(_L_PAREN);
       render("~");
       pp(_negatedvaluecondition.valuecondition_, 2);
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralValueCondition _structuralvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralValueCondition) foo;
       if (_i_ > 2) render(_L_PAREN);
       pp(_structuralvaluecondition.structurevaluecondition_, 0);
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.BaseValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.BaseValueCondition _basevaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.BaseValueCondition) foo;
       if (_i_ > 2) render(_L_PAREN);
       pp(_basevaluecondition.groundvaluecondition_, 0);
       if (_i_ > 2) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundValueCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLogicGround)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLogicGround _valuelogicground = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLogicGround) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valuelogicground.logicalground_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureValueCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecCond _valuereccond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecCond) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("!?");
       pp(_valuereccond.recordcondition_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListCond _valuelistcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListCond) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("[?");
       pp(_valuelistcond.listvaluecondition_, 0);
       render("?]");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetCond _valuesetcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetCond) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{?");
       pp(_valuesetcond.listvaluecondition_, 0);
       render("?}");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitCond _valuelitcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitCond) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valuelitcond.valueliteral_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordCondition foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecBodyCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecBodyCond _valuerecbodycond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecBodyCond) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{{");
       pp(_valuerecbodycond.listtuplecondition_, 0);
       render(";");
       pp(_valuerecbodycond.recordcondition_, 0);
       render("}}");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.LogicalGround foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Verity)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Verity _verity = (com.biosimilarity.naturalselection.model.dataset.Absyn.Verity) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("true");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Absurdity)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Absurdity _absurdity = (com.biosimilarity.naturalselection.model.dataset.Absyn.Absurdity) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("false");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Nullity)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Nullity _nullity = (com.biosimilarity.naturalselection.model.dataset.Absyn.Nullity) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("null");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldType foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldTypeExpr _fieldtypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldTypeExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_fieldtypeexpr.typeexpr_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ArrayTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ArrayTypeExpr _arraytypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ArrayTypeExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_arraytypeexpr.typeexpr_, 1);
       render("[");
       pp(_arraytypeexpr.integer_, 0);
       render("]");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RcrdTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RcrdTypeExpr _rcrdtypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.RcrdTypeExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       pp(_rcrdtypeexpr.typeformals_, 0);
       render("{(");
       pp(_rcrdtypeexpr.listtypeexpr_, 0);
       render(")}");
       if (_i_ > 1) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecTypeExpr _rectypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecTypeExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       render("rec");
       pp(_rectypeexpr.typename_, 0);
       render(".");
       pp(_rectypeexpr.typeexpr_, 0);
       if (_i_ > 1) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RefTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RefTypeExpr _reftypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.RefTypeExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       pp(_reftypeexpr.typename_, 0);
       if (_i_ > 1) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.CollTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.CollTypeExpr _colltypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.CollTypeExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       pp(_colltypeexpr.colltype_, 0);
       if (_i_ > 1) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTypeExpr _groundtypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTypeExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       pp(_groundtypeexpr.groundtype_, 0);
       if (_i_ > 1) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.CollType foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.LListTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.LListTypeExpr _llisttypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.LListTypeExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("[");
       pp(_llisttypeexpr.listtypeexpr_, 0);
       render("]");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.SetTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.SetTypeExpr _settypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.SetTypeExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{");
       pp(_settypeexpr.listtypeexpr_, 0);
       render("}");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleTypeExpr _tupletypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleTypeExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("(");
       pp(_tupletypeexpr.listtypeexpr_, 0);
       render(")");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeName foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TypeIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TypeIdent _typeident = (com.biosimilarity.naturalselection.model.dataset.Absyn.TypeIdent) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_typeident.uident_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundType foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundInteger)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundInteger _groundinteger = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundInteger) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("int");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundDouble)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundDouble _grounddouble = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundDouble) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("double");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundString)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundString _groundstring = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundString) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("string");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundChar)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundChar _groundchar = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundChar) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("char");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeFormals foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TypeParameters)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TypeParameters _typeparameters = (com.biosimilarity.naturalselection.model.dataset.Absyn.TypeParameters) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("[");
       pp(_typeparameters.listtypeexpr_, 0);
       render("]");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.Comparison foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Equality)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Equality _equality = (com.biosimilarity.naturalselection.model.dataset.Absyn.Equality) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("==");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Less)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Less _less = (com.biosimilarity.naturalselection.model.dataset.Absyn.Less) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("<");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.More)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.More _more = (com.biosimilarity.naturalselection.model.dataset.Absyn.More) foo;
       if (_i_ > 0) render(_L_PAREN);
       render(">");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.LEq)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.LEq _leq = (com.biosimilarity.naturalselection.model.dataset.Absyn.LEq) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("<=");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GEq)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GEq _geq = (com.biosimilarity.naturalselection.model.dataset.Absyn.GEq) foo;
       if (_i_ > 0) render(_L_PAREN);
       render(">=");
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueExpr foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueAddExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueAddExpr _valueaddexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueAddExpr) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valueaddexpr.valueexpr_1, 0);
       render("+");
       pp(_valueaddexpr.valueexpr_2, 1);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueMultExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueMultExpr _valuemultexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueMultExpr) foo;
       if (_i_ > 1) render(_L_PAREN);
       pp(_valuemultexpr.valueexpr_1, 1);
       render("*");
       pp(_valuemultexpr.valueexpr_2, 2);
       if (_i_ > 1) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueArrAccExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueArrAccExpr _valuearraccexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueArrAccExpr) foo;
       if (_i_ > 2) render(_L_PAREN);
       pp(_valuearraccexpr.valueexpr_1, 2);
       render("[");
       pp(_valuearraccexpr.valueexpr_2, 0);
       render("]");
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueNegExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueNegExpr _valuenegexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueNegExpr) foo;
       if (_i_ > 2) render(_L_PAREN);
       render("-");
       pp(_valuenegexpr.valueexpr_, 3);
       if (_i_ > 2) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVarExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVarExpr _valuevarexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVarExpr) foo;
       if (_i_ > 3) render(_L_PAREN);
       pp(_valuevarexpr.valuevariable_, 0);
       if (_i_ > 3) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitExpr _valuelitexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitExpr) foo;
       if (_i_ > 3) render(_L_PAREN);
       pp(_valuelitexpr.valueliteral_, 0);
       if (_i_ > 3) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVariable foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIdent _valueident = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIdent) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valueident.lident_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLiteral foo, int _i_)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecLit _valuereclit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("!");
       pp(_valuereclit.recordexpr_, 3);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecProjLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecProjLit _valuerecprojlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecProjLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valuerecprojlit.recordexpr_, 3);
       render("/");
       pp(_valuerecprojlit.fieldexpr_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListLit _valuelistlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("[");
       pp(_valuelistlit.listvalueexpr_, 0);
       render("]");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetLit _valuesetlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       render("{");
       pp(_valuesetlit.listvalueexpr_, 0);
       render("}");
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIntLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIntLit _valueintlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIntLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valueintlit.integer_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueDoubleLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueDoubleLit _valuedoublelit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueDoubleLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valuedoublelit.double_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueStringLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueStringLit _valuestringlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueStringLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       printQuoted(_valuestringlit.string_);
       if (_i_ > 0) render(_R_PAREN);
    }
    else     if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCharLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCharLit _valuecharlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCharLit) foo;
       if (_i_ > 0) render(_L_PAREN);
       pp(_valuecharlit.char_, 0);
       if (_i_ > 0) render(_R_PAREN);
    }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListBinding foo, int _i_)
  {
     for (java.util.Iterator<Binding> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleDeclOrCond foo, int _i_)
  {
     for (java.util.Iterator<TupleDeclOrCond> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleCondition foo, int _i_)
  {
     for (java.util.Iterator<TupleCondition> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueCondition foo, int _i_)
  {
     for (java.util.Iterator<ValueCondition> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTypeExpr foo, int _i_)
  {
     for (java.util.Iterator<TypeExpr> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListFieldExpr foo, int _i_)
  {
     for (java.util.Iterator<FieldExpr> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleExpr foo, int _i_)
  {
     for (java.util.Iterator<TupleExpr> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTuplePtn foo, int _i_)
  {
     for (java.util.Iterator<TuplePtn> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }

  private static void pp(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueExpr foo, int _i_)
  {
     for (java.util.Iterator<ValueExpr> it = foo.iterator(); it.hasNext();)
     {
       pp(it.next(), 0);
       if (it.hasNext()) {
         render(",");
       } else {
         render("");
       }
     }
  }


  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Joined)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Joined _joined = (com.biosimilarity.naturalselection.model.dataset.Absyn.Joined) foo;
       render("(");
       render("Joined");
       sh(_joined.recordexpr_1);
       sh(_joined.recordexpr_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Isolated)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Isolated _isolated = (com.biosimilarity.naturalselection.model.dataset.Absyn.Isolated) foo;
       render("(");
       render("Isolated");
       sh(_isolated.recordexpr_1);
       sh(_isolated.recordexpr_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Consed)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Consed _consed = (com.biosimilarity.naturalselection.model.dataset.Absyn.Consed) foo;
       render("(");
       render("Consed");
       sh(_consed.tupleexpr_);
       sh(_consed.recordexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Contexted)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Contexted _contexted = (com.biosimilarity.naturalselection.model.dataset.Absyn.Contexted) foo;
       render("(");
       render("Contexted");
       render("[");
       sh(_contexted.listbinding_);
       render("]");
       sh(_contexted.recordexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Referenced)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Referenced _referenced = (com.biosimilarity.naturalselection.model.dataset.Absyn.Referenced) foo;
       render("(");
       render("Referenced");
       sh(_referenced.recordvariable_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Collected)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Collected _collected = (com.biosimilarity.naturalselection.model.dataset.Absyn.Collected) foo;
       render("(");
       render("Collected");
       sh(_collected.collectionexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Emptied)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Emptied _emptied = (com.biosimilarity.naturalselection.model.dataset.Absyn.Emptied) foo;
       render("Emptied");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.Binding foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.BindingExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.BindingExpr _bindingexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.BindingExpr) foo;
       render("(");
       render("BindingExpr");
       sh(_bindingexpr.recordptn_1);
       sh(_bindingexpr.recordptn_2);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordPtn foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordDestructor)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordDestructor _recorddestructor = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordDestructor) foo;
       render("(");
       render("RecordDestructor");
       render("[");
       sh(_recorddestructor.listtupleptn_);
       render("]");
       sh(_recorddestructor.recordptn_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordLiteral)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordLiteral _recordliteral = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordLiteral) foo;
       render("(");
       render("RecordLiteral");
       sh(_recordliteral.recordexpr_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordVariable foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordIdent _recordident = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordIdent) foo;
       render("(");
       render("RecordIdent");
       sh(_recordident.uident_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecordWild)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecordWild _recordwild = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecordWild) foo;
       render("RecordWild");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.CollectionExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Extension)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Extension _extension = (com.biosimilarity.naturalselection.model.dataset.Absyn.Extension) foo;
       render("(");
       render("Extension");
       sh(_extension.fieldformals_);
       sh(_extension.extensionbodyexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Intension)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Intension _intension = (com.biosimilarity.naturalselection.model.dataset.Absyn.Intension) foo;
       render("(");
       render("Intension");
       sh(_intension.fieldformals_);
       sh(_intension.intensionbodyexpr_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormals foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormalSpec)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormalSpec _fieldformalspec = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldFormalSpec) foo;
       render("(");
       render("FieldFormalSpec");
       render("[");
       sh(_fieldformalspec.listfieldexpr_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBodyExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBody)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBody _extensionbody = (com.biosimilarity.naturalselection.model.dataset.Absyn.ExtensionBody) foo;
       render("(");
       render("ExtensionBody");
       render("[");
       sh(_extensionbody.listtupleexpr_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBodyExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBody)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBody _intensionbody = (com.biosimilarity.naturalselection.model.dataset.Absyn.IntensionBody) foo;
       render("(");
       render("IntensionBody");
       sh(_intensionbody.tupleptn_);
       render("[");
       sh(_intensionbody.listtupledeclorcond_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldDecl)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldDecl _fielddecl = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldDecl) foo;
       render("(");
       render("FieldDecl");
       sh(_fielddecl.fieldname_);
       sh(_fielddecl.fieldtype_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldActual)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldActual _fieldactual = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldActual) foo;
       render("(");
       render("FieldActual");
       sh(_fieldactual.fieldname_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldName foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldIdent _fieldident = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldIdent) foo;
       render("(");
       render("FieldIdent");
       sh(_fieldident.uident_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSumExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSumExpr _tuplesumexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSumExpr) foo;
       render("(");
       render("TupleSumExpr");
       sh(_tuplesumexpr.tupleexpr_1);
       sh(_tuplesumexpr.tupleexpr_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleBaseExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleBaseExpr _tuplebaseexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleBaseExpr) foo;
       render("(");
       render("TupleBaseExpr");
       render("[");
       sh(_tuplebaseexpr.listvalueexpr_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleMultExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleMultExpr _tuplemultexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleMultExpr) foo;
       render("(");
       render("TupleMultExpr");
       sh(_tuplemultexpr.tupleexpr_1);
       sh(_tuplemultexpr.tupleexpr_2);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleDeclOrCond foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ConditionIn)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ConditionIn _conditionin = (com.biosimilarity.naturalselection.model.dataset.Absyn.ConditionIn) foo;
       render("(");
       render("ConditionIn");
       sh(_conditionin.tuplecond_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.DeclIn)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.DeclIn _declin = (com.biosimilarity.naturalselection.model.dataset.Absyn.DeclIn) foo;
       render("(");
       render("DeclIn");
       sh(_declin.tuplegen_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtn foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtnExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtnExpr _tupleptnexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TuplePtnExpr) foo;
       render("(");
       render("TuplePtnExpr");
       render("[");
       sh(_tupleptnexpr.listvalueexpr_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGen foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGenExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGenExpr _tuplegenexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleGenExpr) foo;
       render("(");
       render("TupleGenExpr");
       sh(_tuplegenexpr.tupleptn_);
       sh(_tuplegenexpr.recordexpr_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCond foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSatExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSatExpr _tuplesatexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleSatExpr) foo;
       render("(");
       render("TupleSatExpr");
       sh(_tuplesatexpr.tupleptn_);
       sh(_tuplesatexpr.tuplecondition_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCompExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCompExpr _tuplecompexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCompExpr) foo;
       render("(");
       render("TupleCompExpr");
       sh(_tuplecompexpr.valueexpr_1);
       sh(_tuplecompexpr.comparison_);
       sh(_tuplecompexpr.valueexpr_2);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TupleCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctTupleCondition _disjuncttuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctTupleCondition) foo;
       render("(");
       render("DisjunctTupleCondition");
       sh(_disjuncttuplecondition.tuplecondition_1);
       sh(_disjuncttuplecondition.tuplecondition_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctTupleCondition _conjuncttuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctTupleCondition) foo;
       render("(");
       render("ConjunctTupleCondition");
       sh(_conjuncttuplecondition.tuplecondition_1);
       sh(_conjuncttuplecondition.tuplecondition_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedTupleCondition _negatedtuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedTupleCondition) foo;
       render("(");
       render("NegatedTupleCondition");
       sh(_negatedtuplecondition.tuplecondition_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralTupleCondition _structuraltuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralTupleCondition) foo;
       render("(");
       render("StructuralTupleCondition");
       sh(_structuraltuplecondition.structuretuplecondition_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.BaseTupleCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.BaseTupleCondition _basetuplecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.BaseTupleCondition) foo;
       render("(");
       render("BaseTupleCondition");
       sh(_basetuplecondition.groundtuplecondition_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureTupleCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleValCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleValCond _tuplevalcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleValCond) foo;
       render("(");
       render("TupleValCond");
       render("[");
       sh(_tuplevalcond.listvaluecondition_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTupleCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleLogicGround)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleLogicGround _tuplelogicground = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleLogicGround) foo;
       render("(");
       render("TupleLogicGround");
       sh(_tuplelogicground.logicalground_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctValueCondition _disjunctvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.DisjunctValueCondition) foo;
       render("(");
       render("DisjunctValueCondition");
       sh(_disjunctvaluecondition.valuecondition_1);
       sh(_disjunctvaluecondition.valuecondition_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctValueCondition _conjunctvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.ConjunctValueCondition) foo;
       render("(");
       render("ConjunctValueCondition");
       sh(_conjunctvaluecondition.valuecondition_1);
       sh(_conjunctvaluecondition.valuecondition_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedValueCondition _negatedvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.NegatedValueCondition) foo;
       render("(");
       render("NegatedValueCondition");
       sh(_negatedvaluecondition.valuecondition_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralValueCondition _structuralvaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.StructuralValueCondition) foo;
       render("(");
       render("StructuralValueCondition");
       sh(_structuralvaluecondition.structurevaluecondition_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.BaseValueCondition)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.BaseValueCondition _basevaluecondition = (com.biosimilarity.naturalselection.model.dataset.Absyn.BaseValueCondition) foo;
       render("(");
       render("BaseValueCondition");
       sh(_basevaluecondition.groundvaluecondition_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundValueCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLogicGround)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLogicGround _valuelogicground = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLogicGround) foo;
       render("(");
       render("ValueLogicGround");
       sh(_valuelogicground.logicalground_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.StructureValueCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecCond _valuereccond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecCond) foo;
       render("(");
       render("ValueRecCond");
       sh(_valuereccond.recordcondition_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListCond _valuelistcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListCond) foo;
       render("(");
       render("ValueListCond");
       render("[");
       sh(_valuelistcond.listvaluecondition_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetCond _valuesetcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetCond) foo;
       render("(");
       render("ValueSetCond");
       render("[");
       sh(_valuesetcond.listvaluecondition_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitCond _valuelitcond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitCond) foo;
       render("(");
       render("ValueLitCond");
       sh(_valuelitcond.valueliteral_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.RecordCondition foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecBodyCond)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecBodyCond _valuerecbodycond = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecBodyCond) foo;
       render("(");
       render("ValueRecBodyCond");
       render("[");
       sh(_valuerecbodycond.listtuplecondition_);
       render("]");
       sh(_valuerecbodycond.recordcondition_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.LogicalGround foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Verity)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Verity _verity = (com.biosimilarity.naturalselection.model.dataset.Absyn.Verity) foo;
       render("Verity");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Absurdity)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Absurdity _absurdity = (com.biosimilarity.naturalselection.model.dataset.Absyn.Absurdity) foo;
       render("Absurdity");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Nullity)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Nullity _nullity = (com.biosimilarity.naturalselection.model.dataset.Absyn.Nullity) foo;
       render("Nullity");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.FieldType foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.FieldTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.FieldTypeExpr _fieldtypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.FieldTypeExpr) foo;
       render("(");
       render("FieldTypeExpr");
       sh(_fieldtypeexpr.typeexpr_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ArrayTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ArrayTypeExpr _arraytypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ArrayTypeExpr) foo;
       render("(");
       render("ArrayTypeExpr");
       sh(_arraytypeexpr.typeexpr_);
       sh(_arraytypeexpr.integer_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RcrdTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RcrdTypeExpr _rcrdtypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.RcrdTypeExpr) foo;
       render("(");
       render("RcrdTypeExpr");
       sh(_rcrdtypeexpr.typeformals_);
       render("[");
       sh(_rcrdtypeexpr.listtypeexpr_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RecTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RecTypeExpr _rectypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.RecTypeExpr) foo;
       render("(");
       render("RecTypeExpr");
       sh(_rectypeexpr.typename_);
       sh(_rectypeexpr.typeexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.RefTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.RefTypeExpr _reftypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.RefTypeExpr) foo;
       render("(");
       render("RefTypeExpr");
       sh(_reftypeexpr.typename_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.CollTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.CollTypeExpr _colltypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.CollTypeExpr) foo;
       render("(");
       render("CollTypeExpr");
       sh(_colltypeexpr.colltype_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTypeExpr _groundtypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundTypeExpr) foo;
       render("(");
       render("GroundTypeExpr");
       sh(_groundtypeexpr.groundtype_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.CollType foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.LListTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.LListTypeExpr _llisttypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.LListTypeExpr) foo;
       render("(");
       render("LListTypeExpr");
       render("[");
       sh(_llisttypeexpr.listtypeexpr_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.SetTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.SetTypeExpr _settypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.SetTypeExpr) foo;
       render("(");
       render("SetTypeExpr");
       render("[");
       sh(_settypeexpr.listtypeexpr_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TupleTypeExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TupleTypeExpr _tupletypeexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.TupleTypeExpr) foo;
       render("(");
       render("TupleTypeExpr");
       render("[");
       sh(_tupletypeexpr.listtypeexpr_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeName foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TypeIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TypeIdent _typeident = (com.biosimilarity.naturalselection.model.dataset.Absyn.TypeIdent) foo;
       render("(");
       render("TypeIdent");
       sh(_typeident.uident_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.GroundType foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundInteger)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundInteger _groundinteger = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundInteger) foo;
       render("GroundInteger");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundDouble)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundDouble _grounddouble = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundDouble) foo;
       render("GroundDouble");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundString)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundString _groundstring = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundString) foo;
       render("GroundString");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GroundChar)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GroundChar _groundchar = (com.biosimilarity.naturalselection.model.dataset.Absyn.GroundChar) foo;
       render("GroundChar");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.TypeFormals foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.TypeParameters)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.TypeParameters _typeparameters = (com.biosimilarity.naturalselection.model.dataset.Absyn.TypeParameters) foo;
       render("(");
       render("TypeParameters");
       render("[");
       sh(_typeparameters.listtypeexpr_);
       render("]");
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.Comparison foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Equality)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Equality _equality = (com.biosimilarity.naturalselection.model.dataset.Absyn.Equality) foo;
       render("Equality");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.Less)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.Less _less = (com.biosimilarity.naturalselection.model.dataset.Absyn.Less) foo;
       render("Less");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.More)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.More _more = (com.biosimilarity.naturalselection.model.dataset.Absyn.More) foo;
       render("More");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.LEq)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.LEq _leq = (com.biosimilarity.naturalselection.model.dataset.Absyn.LEq) foo;
       render("LEq");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.GEq)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.GEq _geq = (com.biosimilarity.naturalselection.model.dataset.Absyn.GEq) foo;
       render("GEq");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueExpr foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueAddExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueAddExpr _valueaddexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueAddExpr) foo;
       render("(");
       render("ValueAddExpr");
       sh(_valueaddexpr.valueexpr_1);
       sh(_valueaddexpr.valueexpr_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueMultExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueMultExpr _valuemultexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueMultExpr) foo;
       render("(");
       render("ValueMultExpr");
       sh(_valuemultexpr.valueexpr_1);
       sh(_valuemultexpr.valueexpr_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueArrAccExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueArrAccExpr _valuearraccexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueArrAccExpr) foo;
       render("(");
       render("ValueArrAccExpr");
       sh(_valuearraccexpr.valueexpr_1);
       sh(_valuearraccexpr.valueexpr_2);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueNegExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueNegExpr _valuenegexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueNegExpr) foo;
       render("(");
       render("ValueNegExpr");
       sh(_valuenegexpr.valueexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVarExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVarExpr _valuevarexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVarExpr) foo;
       render("(");
       render("ValueVarExpr");
       sh(_valuevarexpr.valuevariable_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitExpr)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitExpr _valuelitexpr = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLitExpr) foo;
       render("(");
       render("ValueLitExpr");
       sh(_valuelitexpr.valueliteral_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueVariable foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIdent)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIdent _valueident = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIdent) foo;
       render("(");
       render("ValueIdent");
       sh(_valueident.lident_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ValueLiteral foo)
  {
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecLit _valuereclit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecLit) foo;
       render("(");
       render("ValueRecLit");
       sh(_valuereclit.recordexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecProjLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecProjLit _valuerecprojlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueRecProjLit) foo;
       render("(");
       render("ValueRecProjLit");
       sh(_valuerecprojlit.recordexpr_);
       sh(_valuerecprojlit.fieldexpr_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListLit _valuelistlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueListLit) foo;
       render("(");
       render("ValueListLit");
       render("[");
       sh(_valuelistlit.listvalueexpr_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetLit _valuesetlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueSetLit) foo;
       render("(");
       render("ValueSetLit");
       render("[");
       sh(_valuesetlit.listvalueexpr_);
       render("]");
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIntLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIntLit _valueintlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueIntLit) foo;
       render("(");
       render("ValueIntLit");
       sh(_valueintlit.integer_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueDoubleLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueDoubleLit _valuedoublelit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueDoubleLit) foo;
       render("(");
       render("ValueDoubleLit");
       sh(_valuedoublelit.double_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueStringLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueStringLit _valuestringlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueStringLit) foo;
       render("(");
       render("ValueStringLit");
       sh(_valuestringlit.string_);
       render(")");
    }
    if (foo instanceof com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCharLit)
    {
       com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCharLit _valuecharlit = (com.biosimilarity.naturalselection.model.dataset.Absyn.ValueCharLit) foo;
       render("(");
       render("ValueCharLit");
       sh(_valuecharlit.char_);
       render(")");
    }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListBinding foo)
  {
     for (java.util.Iterator<Binding> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleDeclOrCond foo)
  {
     for (java.util.Iterator<TupleDeclOrCond> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleCondition foo)
  {
     for (java.util.Iterator<TupleCondition> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueCondition foo)
  {
     for (java.util.Iterator<ValueCondition> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTypeExpr foo)
  {
     for (java.util.Iterator<TypeExpr> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListFieldExpr foo)
  {
     for (java.util.Iterator<FieldExpr> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTupleExpr foo)
  {
     for (java.util.Iterator<TupleExpr> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListTuplePtn foo)
  {
     for (java.util.Iterator<TuplePtn> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }

  private static void sh(com.biosimilarity.naturalselection.model.dataset.Absyn.ListValueExpr foo)
  {
     for (java.util.Iterator<ValueExpr> it = foo.iterator(); it.hasNext();)
     {
       sh(it.next());
       if (it.hasNext())
         render(",");
     }
  }


  private static void pp(Integer n, int _i_) { buf_.append(n); buf_.append(" "); }
  private static void pp(Double d, int _i_) { buf_.append(d); buf_.append(" "); }
  private static void pp(String s, int _i_) { buf_.append(s); buf_.append(" "); }
  private static void pp(Character c, int _i_) { buf_.append("'" + c.toString() + "'"); buf_.append(" "); }
  private static void sh(Integer n) { render(n.toString()); }
  private static void sh(Double d) { render(d.toString()); }
  private static void sh(Character c) { render(c.toString()); }
  private static void sh(String s) { printQuoted(s); }
  private static void printQuoted(String s) { render("\"" + s + "\""); }
  private static void indent()
  {
    int n = _n_;
    while (n > 0)
    {
      buf_.append(" ");
      n--;
    }
  }
  private static void backup()
  {
     if (buf_.charAt(buf_.length() - 1) == ' ') {
      buf_.setLength(buf_.length() - 1);
    }
  }
  private static void trim()
  {
     while (buf_.length() > 0 && buf_.charAt(0) == ' ')
        buf_.deleteCharAt(0); 
    while (buf_.length() > 0 && buf_.charAt(buf_.length()-1) == ' ')
        buf_.deleteCharAt(buf_.length()-1);
  }
  private static int _n_ = 0;
  private static StringBuilder buf_ = new StringBuilder(INITIAL_BUFFER_SIZE);
}

